package com.itlong.cloud.property.dao;

import com.itlong.cloud.POJO.VO.property.PropertyArrearPeopleSelectVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      欠费住户查询持久层接口
 * </desc>
 *
 * @createDate 2019/05/21
 */
@Mapper
@Repository
public interface IPropertyArrearPeopleSelectDao {

    /**
     * <desc>
     *      分页获取欠费住户信息
     * </desc>
     *
     * @param params 查询参数
     * @return 欠费住户列表
     * @author wangzhi
     * @createDate 2019/05/21
     */
    List<PropertyArrearPeopleSelectVO> getPage(Map<String, Object> params);

    /**
     * <desc>
     *      获取欠费住户信息记录数
     * </desc>
     *
     * @param params 查询参数
     * @return 欠费住户列表
     * @author wangzhi
     * @createDate 2019/05/21
     */
    Integer getRecordCount(Map<String, Object> params);

    /**
     * <desc>
     *      添加
     * </desc>
     *
     * @param map 保存参数集
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/05/22
     */
    Integer save(Map<String, Object> map);

    /**
     * <desc>
     *      条件获取导出的欠费住户信息
     * </desc>
     *
     * @param params 查询参数集
     * @return 欠费住户列表信息
     * @author wangzhi
     * @createDate 2019/05/22
     */
    List<PropertyArrearPeopleSelectVO> getAllData(Map<String, Object> params);

    /**
     * <desc>
     *      账单id获取导出的欠费住户信息
     * </desc>
     *
     * @param feeIdList 账单id集合
     * @return 欠费住户列表信息
     * @author wangzhi
     * @createDate 2019/05/22
     */
    List<PropertyArrearPeopleSelectVO> getDataByFeeIds(@Param("list") List<String> feeIdList, @Param("projectId") String projectId);

    /**
     * <desc>
     *      获取该房间临时解除限制最大截止日期，满足大于当前日期
     * </desc>
     *
     * @param roomId 房间id
     * @return 最大截止日期
     * @author wangzhi
     * @createDate 2019/05/22
     */
    String getMaxEndTimeGreaterThanNow(@Param("roomId") String roomId);

    /**
     * <desc>
     *      更新房间欠费状态为不欠费
     * </desc>
     *
     * @param roomId 房间id
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/05/31
     */
    Integer updateRoomArrearageStatus0(@Param("roomId") String roomId);

    /**
     * <desc>
     *      通过房间id判断用户项目下欠费房间个数
     * </desc>
     *
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/05/31
     */
    Integer getArrearRoomCount(@Param("projectId") String projectId, @Param("userId") String userId);

    /**
     * <desc>
     *      更新用户项目欠费状态为不欠费
     * </desc>
     *
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/05/31
     */
    Integer updateUserProjectArrearageStatus0(@Param("projectId") String projectId, @Param("userId") String userId);

    /**
     * <desc>
     *      更新用户项目欠费状态为欠费
     * </desc>
     *
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/05/31
     */
    Integer updateUserProjectArrearageStatus1(@Param("projectId") String projectId, @Param("userId") String userId);

    /**
     * <desc>
     *      删除临时解除限制
     * </desc>
     *
     * @param roomId 房间id
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/05/31
     */
    Integer deleteMomentRelieve(@Param("roomId") String roomId);

    /**
     * <desc>
     *      通过房间id查询房间下的住户
     * </desc>
     *
     * @param roomId 房间id
     * @return 用户id
     * @author wangzhi
     * @createDate 2019/06/28
     */
    List<String> getUserIdsByRoomId(@Param("roomId") String roomId);
}
